﻿using System;
using System.Activities;

namespace ActivityLib
{
    public sealed class GuessInput : NativeActivity<int>
    {
        /// <summary>
        /// 定义一个字符串类型的活动输入参数
        /// 需要传递给这个活动节点的数据（相当于属性）
        /// </summary>
        public InArgument<string> Text { get; set; }
        protected override bool CanInduceIdle => true;

        // 如果活动返回值，则从 CodeActivity<TResult>
        // 并从 Execute 方法返回该值。
        protected override void Execute(NativeActivityContext context)
        {
            // 获取Text输入参数的运行时值
            string text = context.GetValue(this.Text);
            Console.WriteLine(text);
            //建立一个书签
            context.CreateBookmark("input", new BookmarkCallback(OnInputComplete));
            int guess = 0;
            int.TryParse(Console.ReadLine(), out guess);
            context.ResumeBookmark(new Bookmark("input"), guess);
        }

        private void OnInputComplete(NativeActivityContext context,Bookmark bookmark,object state)
        {
            //设置state的值
            this.Result.Set(context, int.Parse(state.ToString()));
        }
    }
}
